#ifndef RemoteDrv_h	
#define RemoteDrv_h					

#ifdef	EXTR				        	//                                                                               
#undef	EXTR                        	// undefine "EXTR"                                                               
#endif
						                                                                                         
#ifdef	RemoteDrv_C			    		// redefine "EXTR",make sure EXTR defined according to the constant of "main".   
#define EXTR                                                                                                         
#else						                                                                                         
#define EXTR	extern                                                                                               
#endif 

#define		TIMER_RATE						(100) //  不大于脉宽最小间隔时间的1/4，单位:us, 和中断调用函数周期一致
#define		TOLERANCE						(0.3) //  误差范围，+/-30%
#define		REM_HEAD_LOW					(9000) //  头码低电平时间，单位:us
#define		REM_HEAD_HIGH					(4500) //  头码高电平时间，单位:us
#define		REM_ONE_CODE					(2250) // "1 " 高低电平整体时间 单位:us
#define		REM_ZERO_CODE					(1125) // "0 " 高低电平整体时间 单位:us
#define		REM_SPACE_CODE					(REM_ONE_CODE*3) // 间隔码，没有间隔码的遥控建议为“1”的3倍时间 单位:us


#define		GetRemotePin()					(MR88FX02_Gpio_Get(PI_REM)) // 获取红外接收IO电平
#define		C_REMOTE_BUF_LENGTH				(64) // 接收超过此长度，马上进入解码。
#define		C_DECODE_DELAY_TIME				(4) //  解码超时时间 单位: 10ms ，此时间必须比任何码都要长。

typedef void (*pDecodeFunc)(uint8 *pBuf,uint8 Length);

EXTR void RecDrv_IRQ(void);   // 中断调用函数
EXTR void RemoteProc(pDecodeFunc Func); // 红外主函数

#endif
